@echo off
chcp 65001 >nul
echo ========================================
echo       网络连接诊断工具 v2
echo ========================================
echo.

set TARGET_SERVER=192.168.1.99
set TARGET_INSTANCE=WIN-G364OSPKKQG

echo [1/5] 测试基本网络连通性...
ping -n 3 %TARGET_SERVER%
if errorlevel 1 (
    echo [错误] 无法ping通服务器 %TARGET_SERVER%
    echo 请检查网络连接
    pause
    exit /b 1
)

echo.
echo [2/5] 使用PowerShell测试SQL Server端口(1433)...
powershell -Command "
try {
    `$tcp = New-Object System.Net.Sockets.TcpClient
    `$result = `$tcp.BeginConnect('%TARGET_SERVER%', 1433, `$null, `$null)
    `$success = `$result.AsyncWaitHandle.WaitOne(3000)
    if (`$success) {
        `$tcp.EndConnect(`$result)
        Write-Host '[成功] 1433端口可以访问' -ForegroundColor Green
    } else {
        Write-Host '[警告] 1433端口无法访问（连接超时）' -ForegroundColor Yellow
    }
    `$tcp.Close()
} catch {
    Write-Host '[警告] 1433端口无法访问：' `$_.Exception.Message -ForegroundColor Red
}
"

echo.
echo [3/5] 测试SQL Server实例连接...
sqlcmd -S "%TARGET_SERVER%\%TARGET_INSTANCE%" -U "sa" -P "Aa123456" -Q "SELECT '连接成功' as Status" -t 5
if errorlevel 1 (
    echo [错误] 无法连接到SQL Server实例
) else (
    echo [成功] SQL Server实例连接正常
)

echo.
echo [4/5] 测试数据库连接...
sqlcmd -S "%TARGET_SERVER%\%TARGET_INSTANCE%" -U "sa" -P "Aa123456" -d "Dyson" -Q "SELECT '数据库连接成功' as Status" -t 5
if errorlevel 1 (
    echo [错误] 无法连接到数据库
) else (
    echo [成功] 数据库连接正常
)

echo.
echo [5/5] 尝试获取SQL Server错误信息...
sqlcmd -S "%TARGET_SERVER%\%TARGET_INSTANCE%" -U "sa" -P "Aa123456" -Q "SELECT @@version" -t 5
if errorlevel 1 (
    echo.
    echo ========================================
    echo           连接问题分析
    echo ========================================
    echo.
    echo 可能的原因和解决方案：
    echo.
    echo 1. 防火墙阻止连接：
    echo    - 需要在192.168.1.99上开放1433端口
    echo    - 命令：netsh advfirewall firewall add rule name=\"SQL Server\" dir=in action=allow protocol=TCP localport=1433
    echo.
    echo 2. SQL Server配置问题：
    echo    - 确保SQL Server已启用TCP/IP协议
    echo    - 在SQL Server配置管理器中检查
    echo.
    echo 3. SQL Server服务未运行：
    echo    - 检查SQL Server (MSSQLSERVER) 服务状态
    echo.
    echo 4. 身份验证问题：
    echo    - 确认用户名/密码正确
    echo    - 确认SQL Server使用混合身份验证模式
    echo.
    echo 5. 实例名称问题：
    echo    - 尝试使用不同格式：192.168.1.99\WIN-G364OSPKKQG,1433
    echo.
)

echo.
pause